<?php
/**
 * Permite agregar nuevas zonas de estacionamiento SIMERT
 * @package simertweb 
 * @subpackage controllers  
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com> 
 * @version 1.0 
 */
class Coordenadas_calles extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('mrol');
        $this->load->model('mcalles');
        $this->load->model('mcoordenadas');
        $this->load->model('mzona');
        $this->load->model('msubcalles');
        $this->load->model('acceso');
    }

    /**
     * Presenta la interfaz para ingresar una nueva subcalle
     */
    function index() {
        if ($this->acceso->sesion() == 1) {
            $array1 = $this->mcalles->callesLista();
            $array2 = $this->mzona->listartodasZonas();
            $data['listacalles'] = array_merge($array2, array_merge($array1));
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('coordenadas_calles', $data);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }

    /**
     * Permite guardar una nueva subcalle
     */
    function guardar() {
        $this->form_validation->set_rules('azules', 'Espacios', 'required|integer|greater_than[1]|less_than[25]');
        $this->form_validation->set_rules('zona', 'Zona', 'required');
        $this->form_validation->set_rules('sec_1', ' ', 'required');
        $this->form_validation->set_rules('sec_2', ' ', 'required');
        $this->form_validation->set_rules('lat_1', ' ', 'required');
        $this->form_validation->set_rules('lon_2', ' ', 'required');
        $this->form_validation->set_rules('lat_2', ' ', 'required');
        $this->form_validation->set_rules('lon_1', ' ', 'required');

        $this->form_validation->set_rules('calle', ' ', 'required|callback_subcalles_check|callback_validar_subcalles');
        $this->form_validation->set_rules('orientacion', ' ', 'required');
//        $this->form_validation->set_rules('', ' ', 'required|callback_subcalles_check');
        if ($this->form_validation->run() === TRUE) {
            $this->mcoordenadas->guardarSubcalle();
            $data['message'] = '/simertweb/coordenadas_calles';
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('includes/mensaje_exito', $data);
            $this->load->view('includes/footer');
        } else {
            $this->index();
        }
    }

    function listarSubcalles() {
        if ($this->acceso->sesion() == 1) {
            $data['listasubcalles'] = $this->mcoordenadas->listarSubcalles();
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('coordenadas_calles', $data);
            $this->load->view('includes/footer');
        } else {
            $this->index();
        }
    }

    /**
     * Valida que la subcalle no se duplique
     * @return boolean
     */
    function validar_subcalles() {
        if (is_bool($this->msubcalles->obtener_idSubcalle($this->mcalles->indice($_POST['calle']), $this->mcalles->indice($_POST['sec_1']), $this->mcalles->indice($_POST['sec_2']), $_POST['orientacion']))) {
            return TRUE;
        } else {
            $this->form_validation->set_message('validar_subcalles', '<p style="color: red">La subcalle ya existe en una zona</p>');
            return FALSE;
        }
    }

    /**
     * Válida las coordendas de las subcalles
     * @param type $str_in es cada una de las coordendas
     * @return boolean
     */
    function validar_coordenadas($str_in = '') {
        if (is_bool($str_in)) {
            return TRUE;
        } else {
            $this->form_validation->set_message('validar_coordenadas', '<p style="color: red">El campo %s acepta decimales.</p>');
            return FALSE;
        }
    }

    /**
     * Válida que las calles que componen la subcalle sean distintas
     * @return boolean
     */
    function subcalles_check() {
        if ($_POST['calle'] == $_POST['sec_1'] || $_POST['calle'] == $_POST['sec_2'] || $_POST['sec_1'] == $_POST['sec_2']) {
            $this->form_validation->set_message('subcalles_check', '<p style="color: red">Las calles ingresadas deben ser distintas</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

}

?>
